package com.hsjk.szwj.module.pay.dal.dataobject.config;

import cn.hutool.json.JSONUtil;
import com.hsjk.szwj.framework.mq.core.stream.AbstractStreamMessage;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author chenjiawei
 * @desc 业务场景： [ 支付订单补单（一般用于没有回调的接口，比如微信的条码支付） ]
 * @Date 2023/08/24 01:37
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PayOrderReissueMQ extends AbstractStreamMessage {
    /**
     * 内置msg 消息体定义
     **/
    private MsgPayload payload;

    /**
     * 【！重要配置项！】 定义Msg消息载体
     **/
    @Data
    @AllArgsConstructor
    public static class MsgPayload {

        /**
         * 支付订单号
         **/
        private Long payOrderId;

        /**
         * 通知次数
         **/
        private Integer count;

    }

    /**
     * 【！重要配置项！】 构造MQModel , 一般用于发送MQ时
     **/
    public static PayOrderReissueMQ build(Long payOrderId, Integer count) {
        return new PayOrderReissueMQ(new MsgPayload(payOrderId, count));
    }

    /**
     * 解析MQ消息， 一般用于接收MQ消息时
     **/
    public static MsgPayload parse(String msg) {
        return JSONUtil.toBean(msg, MsgPayload.class);
    }

    @Override
    public String getStreamKey() {
        return "pay-order-reissue";
    }
}
